<?php
declare (strict_types = 1);

namespace app\controller;

use app\lib\SMS;
use app\validate\CheckTel;
use think\exception\ValidateException;
use think\Request;

class ChangeTel
{
    /**
     *修改手机号页面
     */
    public function changeTelShow()
    {
//        跳转到修改手机号页面
        return view('index/changeTel');
    }


    /**
     * @param Request $request
     * @return \think\response\Json
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * 发送验证码的方法
     */
    public function sendTel(Request $request){
//        验证前端数据是否正确
        try {
            validate(CheckTel::class)->check($request->post());
        }catch (ValidateException $exception){
//            返回失败数据
            return fail('',$exception->getMessage());
        }
//        接收手机号
        $tel=$request->post('tel');
//        验证手机号是否注册过
        $userData=(new \app\model\User())->checkTel($tel);
        if(!$userData){
            return fail('请先注册');
        }
//        调用发送验证码功能
        $data=SMS::sms($tel);
//        返回数据
        return $data;
    }


    /**
     * @param Request $request
     * @return \think\response\Json
     * 验证手机号和验证码
     */
    public function changeTel(Request $request){
//        接收前端数据
        $data=$request->post();
//        判断验证码是否正确
        if($data['code']!=cache('code_'.$data['tel'])){
            return fail('验证码不对');
        }
//        返回正确
        return succeed('','请修改');
    }


    /**
     * @return \think\response\View
     * 输入手机号
     */
    public function telPage(){
        return view('index/telPage');
    }


    /**
     * @param Request $request
     * @return \think\response\Json
     * 修改手机号方法
     */
    public function changeTelData(Request $request){
        //        验证前端数据是否正确
        try {
            validate(CheckTel::class)->check($request->post());
        }catch (ValidateException $exception){
//            返回失败数据
            return fail('',$exception->getMessage());
        }
//        接受前端数据
        $tel=$request->post('tel');
//        修改手机号
        $res=(new \app\model\User())->changeTel($tel);
        if(!$res){
            return fail('','修改失败');
        }
//        返回成功
        return succeed('修改成功');
    }
}
